package app.vista;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

import vo.PendienteVO;
import app.controlador.ControladorSolicitudDeDistribucion;
import framework.modelo.Businessdelegate;
import framework.vista.Vista;

public class SolicitudDeDistribucion extends Vista implements ActionListener {
	private static final long serialVersionUID = 1L;

	public SolicitudDeDistribucion(Businessdelegate bd) {
		super(bd);
	}

	public void inicializar() {
		JFC jfc = new JFC();

		if (jfc.getSelectedFile() != null) {
			((ControladorSolicitudDeDistribucion) (this.getControlador()))
					.obtenerSolicitudDeDistribucionXML(jfc.getSelectedFile()
							.getAbsolutePath());
			System.out.println("Solicitud Distribucion enviada al JBoss");
		}

		componentes();
		propiedades();
		centrarPantalla();

		this.setVisible(true);
	}

	@SuppressWarnings("unchecked")
	public void componentes() {
		Vector pendientes;
		DefaultTableModel defaulttablemodel;
		PendienteVO pendiente;
		String fila[] = new String[6];

		Container c = this.getContentPane();
		c.setLayout(new BorderLayout());

		JPanel norte = new JPanel(new GridLayout(1, 2, 0, 0));

		ImageIcon logoZara = new ImageIcon("./data/logo2.jpg", "ZARA");
		JLabel etiqueta = new JLabel(logoZara);

		norte.add(etiqueta);

		c.add(norte, BorderLayout.NORTH);

		pendientes = ((ControladorSolicitudDeDistribucion) (this
				.getControlador())).obtenerAEnviarYPendientes();
		System.out
				.println("Obtiene lista de Enviar y Pendientes desde el Businessdelegate");

		defaulttablemodel = new DefaultTableModel();
		defaulttablemodel.addColumn("Articulo");
		defaulttablemodel.addColumn("Tienda");
		defaulttablemodel.addColumn("a Enviar a Tienda");
		defaulttablemodel.addColumn("a Pedir de Fabrica");
		defaulttablemodel.addColumn("a Llegar de Fabrica y Enviar");
		defaulttablemodel.addColumn("a Llegar de Fabrica");

		fila[0] = "Articulo";
		fila[1] = "Tienda";
		fila[2] = "a Enviar a Tienda";
		fila[3] = "a Pedir de Fabrica";
		fila[4] = "a Llegar de Fabrica y Enviar";
		fila[5] = "a Llegar de Fabrica";
		defaulttablemodel.addRow(fila);

		if (pendientes != null) {

			for (int i = 0; i < pendientes.size(); i++) {
				pendiente = (PendienteVO) pendientes.get(i);

				fila[0] = String.valueOf((pendiente.getArticulo())
						.getDescripcion());
				fila[1] = String.valueOf((pendiente.getTienda()).getNombre());
				fila[2] = String.valueOf(pendiente.getAEnviarATienda());
				fila[3] = String.valueOf(pendiente.getAPedirAFabrica());
				fila[4] = String
						.valueOf(pendiente.getALlegarDeFabricaYEnviar());
				fila[5] = String.valueOf(pendiente.getALlegarDeFabrica());
				defaulttablemodel.addRow(fila);

			}

		}

		JTable table = new JTable(defaulttablemodel);

		c.add(table, BorderLayout.CENTER);

		JPanel sur = new JPanel(new FlowLayout());
		JButton volver = new JButton("Volver");
		volver.addActionListener(this);
		volver.setActionCommand("btnVolver");

		sur.add(volver);
		c.add(sur, BorderLayout.SOUTH);
	}

	public void propiedades() {
		setTitle("Listado de Articulos a Enviar y Pendientes");
		setLocation(100, 100);
		setIconImage(new ImageIcon("./data/icon.jpg").getImage());
		// setResizable(false);
		pack();
	}

	public void centrarPantalla() {
		Dimension pantalla = Toolkit.getDefaultToolkit().getScreenSize();
		Dimension ventana = this.getSize();

		this.setLocation((pantalla.width - ventana.width) / 2,
				(pantalla.height - ventana.height) / 2);
	}

	public void actionPerformed(ActionEvent e) {
		// btnVolver presionado
		if ("btnVolver".equals(e.getActionCommand())) {
			this.setVisible(false);
		}
	}
}
